var Mock = require("mockjs");
const patient = [
  '气象站',
  '卫星遥感',
  '无人机',
  '雷达',
  '浮标',
  '探空气球',
  '自动气象站',
  '网络爬虫'
];
const variety = ['桂味', '黑叶', '糯米滋', '槐枝', '三月红'];
const conterlist = ['修改账号信息', '修改了天气信息', '修改了用户信息', '进行了账号注销', '注册账号', '完善用户信息', '添加采集配置'];
const categorieslist = ['灌溉', '除虫', '修建多余树枝', '清除病患体', '注射营养液'];
const weather_condition = ['晴', '阴', '雨', '雪', '多云'];
const bandwidth = ['晴', '阴', '雨', '雪', '多云'];
const systematic = ['Win10-2021', 'Ubuntu', 'CentOS', 'RedHat', 'Win7-2016','Win11-2023'];

const heightlist = [4.5, 4.7, 4.8, 4.9, 5.0, 5.1, 5.2, 5.3];
const statuslist = ['正常', '异常']
const processorlist = ['intel', 'amd']
const meteorological = ['地面气象观测仪器', '高空气象探测仪器']
const suggests = [`你的检查报告提示有血脂升高，还有肝功能异常，因为你是乙肝病毒携带者，肝功能是有影响的，至于血脂高，着就需要你控制饮食了，高脂饮食就少吃点。多运动。
意见建议：你还比较年轻，血脂升高不是很多呢，可以通过运动饮食疗法控制，建议到医院复查血脂，根据结果来决定是否服药治疗。 `,
  `你的体检结果看，大多数都基本上正常范围，但你的心跳有点偏慢，就是心动过缓，血脂有轻度的升高，因此建议你认真锻炼身体。注意低盐低脂饮食。必要的时候口服他汀类药物进行治疗。`,
  ` 血脂偏高: 指血中脂类物质增多，造成血粘度增高或动脉粥样硬化。 使脑中风、冠心病、心肌梗死等病风险性增高。低脂饮食，少吃油腻食物、肥肉、 动物内脏，多食蔬菜水果，加强运动，促进脂质代谢，在医生指导下使用调脂药 物。`,
  `建议低胆固醇、低脂肪酸饮食，多食用含不饱和脂肪酸的油类(如麻油、菜油、豆油、菜油、玉米油等》，少食用饱和脂肪酸较多的油类(如动物油)，多食蔬菜水果及 豆类豆制品。由于人体胆固醉的合成速度午夜合成最快， 故提倡: 早吃饱、中吃好、晚吃少。 不宜长期使用广谱抗菌素和可增加血脂的药物，必要时医生指导下药物治疗。`,
  `肝功能是属于有异常的情况。尿酸偏高的这种情况的话考虑还是和平时有饮酒过高是有关系的，尿酸过高的话不排除会引起出现痛风，目前的情况建议您清淡饮食，可以积极的配合口服的药物来进行治疗的。`]
var Random = Mock.Random;

const knolw_data = [
  '荔枝霜霉病：这是一种由真菌引起的病害，主要通过空气传播。预防措施包括保持园地清洁，避免过度湿润，及时清除病残体。',
  '荔枝炭疽病：这是一种由真菌引起的病害，主要通过雨水和昆虫传播。预防措施包括定期喷洒杀菌剂，保持园地通风，避免过度湿润。',
  '荔枝黑星病：这是一种由真菌引起的病害，主要通过空气和雨水传播。预防措施包括定期喷洒杀菌剂，保持园地清洁，避免过度湿润。',
  '荔枝小蠹：这是一种害虫，主要通过幼虫取食荔枝的叶片、果实和枝干。防治措施包括定期巡查，发现幼虫及时处理，使用生物防治方法。',
  '荔枝象甲：这是一种害虫，主要通过幼虫取食荔枝的叶片、果实和枝干。防治措施包括定期巡查，发现幼虫及时处理，使用生物防治方法。',
  '荔枝螟蛾：这是一种害虫，主要通过幼虫取食荔枝的叶片、果实和枝干。防治措施包括定期巡查，发现幼虫及时处理，使用生物防治方法。',
  '合理施肥：过度或不足的施肥都会影响荔枝的生长和抗病能力。应根据荔枝的生长阶段和土壤情况，合理施用有机肥和化肥。',
  '及时排水：荔枝不耐水湿，过多的水分会导致病害的发生。应定期检查园地的排水情况，及时排除积水。',
  '清除病残体：病残体是病害和虫害的主要传播源。应及时清除落叶、枯枝和病果，减少病虫害的发生。',
  '培训和教育：了解和掌握荔枝病虫害管理的知识是非常重要的。可以通过参加培训课程、阅读相关书籍和资料等方式进行学习和提高。'

];
const guangdongPlaces = [
  "广州市",
  "深圳市",
  "珠海市",
  "汕头市",
  "佛山市",
  "江门市",
  "湛江市",
  "茂名市",
  "肇庆市",
  "惠州市",
  "梅州市",
  "汕尾市",
  "河源市",
  "阳江市",
  "清远市",
  "东莞市",
  "中山市",
  "潮州市",
  "揭阳市",
  "云浮市"
];
const instrument_list = [
  "自动气象站",
  "自动雨量站",
  "风速风向仪",
  "百叶箱",
  "温湿度记录仪",
  "气象雷达",
  "探空气球",
  "气象飞机"
];


let users = []
const count = 40
const tokens = []
for (let i = 0; i < count; i++) {
  let blood1 = Math.floor(Math.random() * (80 - 60 + 1)) + 60;
  let blood2 = Math.floor(Math.random() * (150 - 90 + 1)) + 90;
  users.push(
    Mock.mock({
      id: i,
      ID: 'token' + i + Mock.Random.guid().slice(0, 13),
      // name: Mock.Random.cname(),
      title: Mock.Random.cname(),
      addr: '广东省 ' + guangdongPlaces[Math.floor(Math.random() * guangdongPlaces.length)],
      address: '广东省 ' + guangdongPlaces[Math.floor(Math.random() * guangdongPlaces.length)],//随机地址
      sex: Mock.Random.integer(0, 1),
      height: Math.floor(Math.random() * (10 - 5 + 1)) + 5,
      weight: Math.floor(Math.random() * (200 - 90 + 1)) + 90,
      temperature: Math.floor(Math.random() * (40 - 20 + 1)) + 20,
      wind: Math.floor(Math.random() * (10 - 1 + 1)) + 1,
      humidity: Math.floor(Math.random() * (100 - 0 + 1)) + 0,
      Pm2: Math.floor(Math.random() * (250 - 0 + 1)) + 0,
      memory: Math.floor(Math.random() * (30 - 1 + 1)) + 1,
      vCPU: Math.floor(Math.random() * (50 - 1 + 1)) + 1,
      //血压
      bloodpressure: blood1 + '-' + blood2,
      nickName: '@last',
      'url': Random.url('http', Random.first()), // "http://nuysoft.com/ysq"
      'url2': '@url()', // "http://nuysoft.com/ysq"
      phone: /^1[34578]\d{9}$/,//随机电话号码
      'age|11-99': 1,//年龄
      email: '@email',//随机邮箱
      isMale: '@boolean',//随机性别
      createTime: '@datetime',//创建时间
      "county": Random.county(true), // "广东"
      "county2": '@county(广东)', // "广东"
      avatar() {
        //用户头像
        return Mock.Random.image('100×100', Mock.Random.color(), '#757575', 'png', this.nickName)
      },
      // 年龄
      age: Random.integer(20, 50),
      // 随机生成一个 IP 地址
      'IP': Random.ip(), // "112.127.151.37"
      'IP2': '@ip()', // "233.144.17.219"
      // 肝功能
      liverfunction: statuslist[Math.floor(Math.random() * statuslist.length)],
      patient1: patient[Math.floor(Math.random() * patient.length)],
      variety1: variety[Math.floor(Math.random() * variety.length)],
      conterlist1: conterlist[Math.floor(Math.random() * conterlist.length)],
      categorieslist1: categorieslist[Math.floor(Math.random() * categorieslist.length)],
      knolw_data1: knolw_data[Math.floor(Math.random() * knolw_data.length)],
      weather_condition1: weather_condition[Math.floor(Math.random() * weather_condition.length)],
      systematic1: systematic[Math.floor(Math.random() * systematic.length)],
      processorlist1: processorlist[Math.floor(Math.random() * processorlist.length)],
      meteorological1: meteorological[Math.floor(Math.random() * meteorological.length)],
      instrument_list1: instrument_list[Math.floor(Math.random() * instrument_list.length)],
      guangdongPlaces1: '广东省 ' + guangdongPlaces[Math.floor(Math.random() * guangdongPlaces.length)],
      // 医生建议
      // suggestslist: suggests[Math.floor(Math.random() * suggests.length)],
      // // 血糖
      // bloodsugar: parseFloat((Math.random() * (10 - 1) + 1).toFixed(2)),
      // // 血脂
      // bloodfat: parseFloat((Math.random() * (5 - 1) + 1).toFixed(2)),
      // // 肾功能
      // renalfunction: statuslist[Math.floor(Math.random() * statuslist.length)],
      // // 视力
      // vision: heightlist[Math.floor(Math.random() * heightlist.length)],
      // // 体检时间
      birth: '2023-' + Random.datetime("MM-dd") + '   ' + Random.datetime("HH:mm:ss"),  // 值是指定格式的日期字符串
      // list: {
      //   list1: parseFloat((Math.random() * (100 - 10) + 1).toFixed(2)),
      //   list2: parseFloat((Math.random() * (100 - 10) + 1).toFixed(2)),
      //   list3: parseFloat((Math.random() * (100 - 10) + 1).toFixed(2)),
      //   list4: parseFloat((Math.random() * (100 - 10) + 1).toFixed(2)),
      //   list5: parseFloat((Math.random() * (100 - 10) + 1).toFixed(2)),
      // }
    })
  )
  // console.log(users[1]);
  tokens.push(users[i].ID)
}
let user1 = toObject(tokens, users);
function toObject(names, values) {
  var result = {};
  for (var i = 1; i < names.length; i++)
    result[names[i]] = values[i];
  return result;
}
// console.log(user1);
// let datalist3 = 
function Torisk() {
  let dataid = users.map(v => v.id);
  let datatitle = users.map(v => v.title);
  let databirth = users.map(v => v.birth);
  let list1 = users.map(v => v.list);
  let patient2 = users.map(v => v.patient1);
  // console.log(list2);
  let goodtotol = dataid.map((id, i) => ({
    id,
    name: datatitle[i],
    date: databirth[i],
    list: list1[i],
    patient3: patient2[i],
  }));
  return goodtotol
}
let risklist = Torisk();

export default {
  login: (config) => {
    const { username } = JSON.parse(config.body);
    const token = tokens[username];
    if (!token) {
      return {
        status: 1,
        message: "用户名或密码错误",
      };
    }
    return {
      status: 0,
      token,
    };
  },
  userInfo: (config) => {
    const id = config.body == null ? 0 : config.body
    // console.log(id);
    if (users.filter(v => v.id == id)) {
      var userdata = users.filter(v => v.id == id);
      // console.log(userdata);
      return {
        status: 200,
        userdata
      }
    } else {
      return {
        status: 404,
        message: "信息获取失败"
      }
    }
  },
  getUsers: () => {
    return {
      status: 0,
      users: Object.values(user1),
    };
  },
  getrisk: () => {
    return {
      status: 0,
      users: Object.values(risklist),
    };
  },
  deleteUser: (config) => {
    const { id } = JSON.parse(config.body);
    // console.log(id);
    const token = tokens[id];
    // console.log(tokens[id]);
    // console.log(users);
    if (token) {
      delete user1[token]
      delete tokens[id];
    }
    return {
      status: 0,
    };
  },
  editUser: (config) => {
    const data = JSON.parse(config.body);
    const { id } = data;
    const token = tokens[id];
    if (token) {
      user1[token] = { ...user1[token], ...data };
    }
    return {
      status: 0,
    };
  },
  ValidatUserID: (config) => {
    const userID = config.body;
    const token = tokens[userID];
    if (token) {
      return {
        status: 1,
      };
    } else {
      return {
        status: 0
      };
    }
  },
  addUser: (config) => {
    const data = JSON.parse(config.body);
    const { id } = data;
    tokens[id] = `${id}-token`
    user1[`${id}-token`] = {
      ...user1[`${id}-token`],
      ...data
    }
    return {
      status: 0,
    };
  },
  logout: (_) => {
    return {
      status: 0,
      data: "success",
    };
  },
};
